package models

import (
	"gorm.io/gorm"
	"time"
)

type Identity struct {
	Id         int64  `gorm:"column:id" json:"id" example:"1"`
	UnionId    string `gorm:"column:unionid" json:"unionid"`
	Account    string `gorm:"column:account" json:"account"`
	Phone      string `gorm:"column:phone" json:"phone"`
	Password   string `gorm:"column:password" json:"password"`
	Name       string `gorm:"column:name" json:"name"`
	Avatar     string `gorm:"column:avatar" json:"avatar"`
	TimeJoin   int64  `gorm:"column:time_join" json:"time_join"`
	TimeActive int64  `gorm:"column:time_active" json:"time_active"`
	TimeDeny   int64  `gorm:"column:time_deny;default:0" json:"time_deny"`
	Agent      string `gorm:"column:agent" json:"agent"`
	Ip         string `gorm:"column:ip" json:"ip"`
	States     string `gorm:"column:states" json:"states"`
	Gender     int    `gorm:"column:gender" json:"gender"`
	City       string `gorm:"column:city" json:"city"`
	Referral   int64  `gorm:"column:referral;default:0" json:"referral"`
	Flag       int    `gorm:"column:flag;default:0" json:"-"`
}

type States struct {
	Phone string `json:"phone"`
	Code  string `json:"code"`
	Mode  string `json:"mode"`
}

func (Identity) TableName() string {
	return "identity"
}

func (a *Identity) BeforeCreate(db *gorm.DB) (err error) {
	if a.TimeActive == 0 {
		a.TimeActive = time.Now().Unix()
	}
	if a.TimeJoin == 0 {
		a.TimeJoin = time.Now().Unix()
	}
	return nil
}
